/**
 * 
 */
package fr.utbm.gi.vi51.slizers.framework.environment;

import java.util.List;

import fr.utbm.gi.vi51.slizers.framework.agent.AgentBody;

/**
 * Abstract implementation of a perception generator for an environment.
 * 
 * @author Tarik Belabbas
 * 
 */
public abstract class PerceptionGenerator< EnvironmentType extends Environment >
{
	/**
	 * The environment for which the perceptions must be generated.
	 */
	private final EnvironmentType environment;
	
	/**
	 * Parameterized constructor.
	 */
	public PerceptionGenerator( EnvironmentType _environment )
	{
		this.environment = _environment;
	}
	
	/**
	 * Returns the environment.
	 *
	 * @return the environment
	 */
	public EnvironmentType getEnvironment()
	{
		return this.environment;
	}

	/**
	 * Computes and returns the perception of an agent body.
	 * 
	 * @param _agentBody the body of the perceiver agent
	 * @return the perceptions of the agent body
	 */
	public abstract List< Perception > computePerceptionsFor(
			AgentBody _agentBody );
}
